exports.createUserNetwork = function(req,res){

    var bodyParams = req.routeInfo.bodyParams

    //创建用户网络时需要使用的参数信息
    var ip2         = 0
    var ip3         = 0
    var networkName = "network_" + bodyParams.username
    var startPort   = 0
    var endPort     = 0

    //查询该用户是否已有网络地址
    function userIsUsedNetwork(cb){

        console.log(121212);

        R.SEND_HTTP(
            req,
            res,
            {
                url    : CORE_APIConfig.coreAPI.easydCloudNetworkUsedSearch.Request_Api_Url + "/cnu_uid/" + bodyParams.userid + "/cnu_is_delete/0",  
                method : 'POST',
                data   : {
                    fields : 'cnu_id'
                }
            },
            function (data) {

                if(data.result.data.length > 0){

                    return RES.errorResponse(res,"该用户已有网络，请勿重复创建");

                }

                cb();

            }
        )

    }

    //生成用户网络范围
    function buildUserNetworkScope(cb){

        //查询最后一条IP生成数据
        R.SEND_HTTP(
            req,
            res,
            {
                url    : CORE_APIConfig.coreAPI.easydCloudNetworkUsedSearch.Request_Api_Url + "/skip/0/limit/1/sort_order/cnu_id-desc",  
                method : 'POST'
            },
            function (data) {

                //获取为用户分配的IP范围
                var maxIp2 = parseInt(data.result.data[0].cnu_ip_2);
                var maxIp3 = parseInt(data.result.data[0].cnu_ip_3);

                if(maxIp3 < 254){
                    ip2 = maxIp2
                    ip3 = ++maxIp3
                }else{
                    ip2 = ++maxIp2
                    ip3 = 1
                }


                //获取为用户分配的端口范围
                startPort = parseInt(data.result.data[0].cnu_end_port);
                endPort   = startPort + 100;

                cb();

            }
        )
    }

    //创建用户网络
    function createUserNetwork(cb){

        R.SEND_HTTP(
            req,
            res,
            {
                url    : CORE_APIConfig.coreAPI.easydCloudNetworkUsedAdd.Request_Api_Url,  
                method : 'POST',
                data   : {
                    cnu_create_time  : common.nowTime(false),
                    cnu_uid          : bodyParams.userid,
                    cnu_network_name : networkName,
                    cnu_ip_2         : ip2,
                    cnu_ip_3         : ip3,
                    cnu_start_port   : startPort,
                    cnu_end_port     : endPort

                }
            },
            function (data) {

                cb();

            }
        )

    }

    //在云服务器为用户创建容器网络
    function createDockerNetwork(cb){

        //拼接IP网段地址
        var dockerSubnet = "192." + ip2 + "." + ip3 + ".0/24"; 

        R.Ssh_exec_dockerCommand(`${DockerSH.CreateUserNetwork} ${dockerSubnet} ${networkName}`,function(rs){

            //判断是否有错误提示
            if(rs.indexOf('Error') != -1){
                return RES.errorResponse(res,"用户网络创建失败，请重新尝试");
            }else{
                cb();
            }
            
        })

    }


    F.Serial([
        userIsUsedNetwork,
        buildUserNetworkScope,
        createUserNetwork,
        createDockerNetwork
    ],() => {

        //将最终结果返回给客户端
        RES.successResponse(res);
    
    })

    

}